
/**
 * 当数据变化 触发依赖 dep通知所有watcher实例 更新视图
 * 自身实例化的时候 往dep中添加自己
 */
class Watcher {
    constructor(vm, key, callback){
        this.vm = vm
        this.key = key
        //回调函数负责更新视图
        this.callback = callback
        Dep.target = this
        //触发get方法 在get方法中调用dep.addSub
        this.oldValue = vm[key]
        Dep.target = null
    }
    update(){
        let nValue = this.vm[this.key]
        if(nValue !== this.oldValue){
            this.callback(nValue)
        }
    }
}